package com.ifind.async.callback;

import com.ifind.async.wrapper.WorkerWrapper;

import java.util.Map;

/**
 * @author: Carlos
 * @create: 2020/10/26 18:49
 */
@FunctionalInterface
public interface IWorker<T, V> {

    /**
     * 超时、异常时，返回的默认值
     *
     * @return 默认值
     */
    default V defaultValue() {return null;}

    /**
     * 在这里做耗时操作，如rpc请求、IO等
     *
     * @param object  object
     * @param allWorkers 任务包装
     * @return
     */
    V action(T object, Map<String, WorkerWrapper> allWorkers);

}
